const db = require('../../db')
const bcryptjs = require('bcryptjs')
const jwt = require('jsonwebtoken')
const { tokenSecret } = require('../../config/config')
module.exports = {
  //注册用户
  regUser(req, res) {
    const data = req.body
    //1. 检测表单数据是否合法
    if (!data.username && !data.password) {
      return res.send({ status: 1, msg: '数据不合法' })
    }
    // 2. 检测用户名是否被占用
    db.query(
      `select * from user where username=?`,
      data.username,
      (err, resList) => {
        if (err) {
          return res.send({ status: 1, msg: err.message })
        }

        if (resList.length > 0) {
          return res.send({ status: 1, msg: '用户名已经被占用' })
        }

        // 3. 对密码进行加密处理
        data.password = bcryptjs.hashSync(data.password)

        // 4. 插入新用户
        db.query(`insert into user set ?`, data, (err, resList) => {
          if (err) {
            return res.send({ status: 1, msg: err.message })
          }

          if (resList.affectedRows !== 1) {
            return res.send({ status: 1, msg: '注册失败请稍后再试' })
          }

          return res.send({ status: 0, msg: '注册成功' })
        })
      }
    )
  },

  //登录
  login(req, res) {
    //1.查找该用户名
    const data = req.body
    db.query(
      `select * from user where username = ?`,
      data.username,
      (err, resList) => {
        if (err) {
          return res.ms(err)
        }

        if (resList.length != 1) {
          return res.ms('查到的用户不唯一')
        }

        //2.验证密码是否正确
        if (!bcryptjs.compareSync(data.password, resList[0].password)) {
          return res.ms('密码错误')
        }

        //3.生成token并返回
        const user = { ...resList[0], password: '', user_pic: '' } // 剔除完毕之后，user 中只保留了用户的 id, username, nickname, email 这四个属性的值

        const token =
          'Bearer ' + jwt.sign(user, tokenSecret, { expiresIn: '10h' }) //// token 有效期为 10 个小时
        return res.ms('登录成功', 0, { token })
      }
    )
  }
}
